#if !defined(__TEXTE_EDITABLE_HPP)
#define __TEXTE_EDITABLE_HPP

#include "texte_editable.h"

template <class T>
texte_editable<T>::texte_editable(std::string texte_par_defaut, bool g, int x, int y, bool v, int z, std::string suffixe, T val) throw() : suffixe_(suffixe), validateur_(val), texte_entre_(texte_par_defaut), ma_surface_(texte_par_defaut + suffixe_, g, x, y, v, z), touche_entree_appuyee_(false) {}

template <class T>
void texte_editable<T>::changer_texte() {
	ma_surface_.texte(texte_entre_ + suffixe_);
	
}

template <class T>
void texte_editable<T>::touche_pressee(int touche_unicode, int touche_sdl, bool relache) {
	if(relache)
		return;
	
	char touche = static_cast<char>(touche_unicode);
	
	if(touche_sdl == module_interface::touche_entree) {
		touche_entree_appuyee_ = true;
	}
		
	if(touche_sdl == module_interface::touche_retour_arriere && texte_entre_.length() > 0)
		texte_entre_.erase(texte_entre_.end()-1, texte_entre_.end());
	else if(touche != 0 && validateur_(touche))
		texte_entre_ += touche;
	
	changer_texte();
}

template <class T>
void texte_editable<T>::texte_entre(std::string nouveau) {
	texte_entre_ = nouveau;
	changer_texte();
}

#endif
